C++ Template Callback Library Copyright 1994 Rich Hickey /* Permission to use, copy, modify, distribute and sell this software * for any purpose is hereby granted without fee, * provided that the above copyright notice appear in all copies and * that both that copyright notice and this permission notice appear * in supporting documentation. Rich Hickey makes no * representations about the suitability of this software for any * purpose. It is provided "as is" without express or implied warranty. */ 1/30/95 This is the first public release of this library. The release consists of: callback.hpp //the library proper cbsuite.cpp //a non-exhaustive test suite cbexam1.cpp //examples cbexam2.cpp cbexam3.cpp readme.txt //this text This library provides a comprehensive, portable, type-safe, general purpose mechanism for inter-component callbacks. A complete rationale and description of this mechanism appears in my article in the February 1995 issue of the C++ Report. Users are strongly encouraged to read the article before proceeding, as the library has minimal embedded documentation at present. The code has been successfully tested on Borland 4.02, IBM C Set++ 2.01 and Watcom 10. If you are attempting a port to another compiler, make sure the suite and examples compile and you can proceed with a good degree of certainty that the library will perform correctly from then on. The only new feature not covered in the article is a third flavor of makeFunctor(), taking a pointer-to-member-function but _no object_. In this case there must be at least one argument to the functor, and the member function will be called on that argument, passing to it any additional parameters. This feature is not covered in the suite yet, but cbexam3.cpp provides a sample of its use. The typedefs for STL are untested. Planned Enhancements: A version that supports stored parameters is in the works. Known bugs: None at present. Please send bug reports, comments, etc to: rich@rcs-hq.mhs.compuserve.com CIS: 73567,3042 I hope you find, as I do, that having a mechanism such as this greatly increases the flexibility you have when designing systems in C++. Enjoy. Rich Hickey